package com.yuncheng.spcyApi.service.impl;

import cn.hutool.core.bean.BeanUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yuncheng.spcyApi.constant.common.SpcyConstant;
import com.yuncheng.spcyApi.entity.SpcyRsJcxm;
import com.yuncheng.spcyApi.entity.SpcyRsYwzdxx;
import com.yuncheng.spcyApi.entity.SpcySqsxBasic;
import com.yuncheng.spcyApi.entity.SpcySqsxJcxm;
import com.yuncheng.spcyApi.mapper.SpcySqsxJcxmMapper;
import com.yuncheng.spcyApi.service.ISpcyRsJcxmService;
import com.yuncheng.spcyApi.service.ISpcyRsYwzdxxService;
import com.yuncheng.spcyApi.service.ISpcySqsxBaiscService;
import com.yuncheng.spcyApi.service.ISpcySqsxJcxmService;

import com.yuncheng.spcyApi.utils.GetUuIdUtils;
import com.yuncheng.spcyApi.utils.StringPatternUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

import com.yuncheng.common.base.service.impl.BaseServiceImpl;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.CountDownLatch;
import java.util.stream.Collectors;

/**
 * @Description: 审评查验-现场检查项目
 * @Author: csx
 * @Date: 2023-03-03
 * @Version: V1.0
 */
@Service
public class SpcySqsxJcxmServiceImpl extends BaseServiceImpl<SpcySqsxJcxmMapper, SpcySqsxJcxm> implements ISpcySqsxJcxmService {

    private static final Logger log = LoggerFactory.getLogger(SpcySqsxJcxmServiceImpl.class);

    @Resource
    private ISpcySqsxBaiscService spcySqsxBaiscService;

    @Resource
    @Lazy
    private ISpcySqsxJcxmService spcySqsxJcxmService;

    @Resource
    @Lazy
    private ISpcyRsYwzdxxService spcyRsYwzdxxService;

    @Resource
    private ISpcyRsJcxmService spcyRsJcxmService;

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void fzRsJcxmToSqsxJcxm(String sqsxId) {
        int MAX_DEAL = 50;//对多数据进行分组，50条一组，一组使用一个线程进行执行

        SpcySqsxBasic sqsxJob = spcySqsxBaiscService.getById(sqsxId);
        if (sqsxJob == null){
            return;
        }
        List<SpcySqsxJcxm> jcxmList = list(new LambdaQueryWrapper<SpcySqsxJcxm>()
                .eq(SpcySqsxJcxm::getFsqsxid, sqsxId));

        if (CollectionUtils.isNotEmpty(jcxmList)){
            return;
        }

        // 业务分类编码
        String ywflCode = sqsxJob.getFywflcode();
        String scjl = SpcyConstant.getJcxmDefaultScjl(ywflCode); // 默认审查结论

        // 获取对应业务分类编码的 检查项目库
        List<SpcyRsJcxm> rsJcxmList = spcyRsJcxmService.list(new LambdaQueryWrapper<SpcyRsJcxm>()
                .eq(SpcyRsJcxm::getFywflcode, ywflCode));

        List<SpcySqsxJcxm> sqsxJcxmList = new ArrayList<>();
        for (SpcyRsJcxm recordBase : rsJcxmList){
            SpcySqsxJcxm defect = new SpcySqsxJcxm();
            BeanUtil.copyProperties(recordBase,defect);
            defect.setId(GetUuIdUtils.NotReplaceUuId());
            defect.setFsqsxid(sqsxId);
            defect.setFjcjl(scjl);
            defect.setFgjshjl(scjl);
            sqsxJcxmList.add(defect);
        }
        if (CollectionUtils.isEmpty(sqsxJcxmList)){
            return;
        }
        int times = (sqsxJcxmList.size() + MAX_DEAL - 1) / MAX_DEAL;
        CountDownLatch countDownLatch = new CountDownLatch(times);
        for (int i = 0; i < times; i++) {
            if (i == times - 1) {
                asyncReviewDefectExecute(sqsxJcxmList.subList(i * MAX_DEAL, sqsxJcxmList.size()), countDownLatch);//调用业务逻辑
            } else {
                asyncReviewDefectExecute(sqsxJcxmList.subList(i * MAX_DEAL, (i + 1) * MAX_DEAL), countDownLatch);
            }
        }
        try {
            countDownLatch.countDown();
        }catch (Exception e){
            log.error("阻塞异常:"+e.getMessage());
        }
    }

    @Override
    public String getQxqkByJcxmXxMap(Map ypscJcxmXX) {
        int ybqxSize = (Integer)ypscJcxmXX.get("ybqxSize");
        int zyqxSize = (Integer)ypscJcxmXX.get("zyqxSize");
        int yzqxSize = (Integer)ypscJcxmXX.get("yzqxSize");

        // 是否存在缺陷情况
        boolean ybqxExistFlag = (Boolean)ypscJcxmXX.get("ybqxExistFlag"); // 一般缺陷
        boolean zyqxExistFlag = (Boolean)ypscJcxmXX.get("zyqxExistFlag"); // 主要缺陷
        boolean yzqxExistFlag = (Boolean)ypscJcxmXX.get("yzqxExistFlag"); // 严重缺陷

        StringBuffer fxqxqk = new StringBuffer("未发现");
        // 未发现严重缺陷
        if (!yzqxExistFlag){
            fxqxqk.append("严重缺陷");
        }

        // 未发现主要缺陷
        if (!zyqxExistFlag){
            // 是否存在严重缺陷
            if (fxqxqk.toString().contains("严重缺陷")){
                fxqxqk.append("和").append("主要缺陷");
            }else {
                fxqxqk.append("主要缺陷");
            }
        }

        // 未发现一般缺陷
        if (!ybqxExistFlag){
            // 存在严重缺陷
            if (fxqxqk.toString().contains("严重缺陷")){
                // 存在主要缺陷
                if (fxqxqk.toString().contains("主要缺陷")) {
                    fxqxqk.replace(fxqxqk.lastIndexOf("和"),fxqxqk.lastIndexOf("和")+1,"、")
                            .append("和").append("一般缺陷");
                }else {
                    fxqxqk.append("和").append("一般缺陷");
                }
            } else {  // 不存在严重缺陷
                // 存在主要缺陷
                if (fxqxqk.toString().contains("主要缺陷")) {
                    fxqxqk.append("和").append("一般缺陷");
                }else {
                    fxqxqk.append("一般缺陷");
                }
            }
        }

        StringBuffer fxqxqk2 = new StringBuffer("");
        // 发现严重缺陷
        if (yzqxExistFlag){
            fxqxqk2.append("发现").append("严重缺陷").append(yzqxSize).append("项");
        }

        // 发现主要缺陷
        if (zyqxExistFlag){
            if (fxqxqk2.toString().contains("严重缺陷")){
                fxqxqk2.append(",").append("发现").append("主要缺陷").append(zyqxSize).append("项");
            }else {
                fxqxqk2.append("发现").append("主要缺陷").append(zyqxSize).append("项");
            }
        }

        // 发现一般缺陷
        if (ybqxExistFlag){
            // 存在严重缺陷
            if (fxqxqk2.toString().contains("严重缺陷")) {
                // 存在主要缺陷
                if (fxqxqk2.toString().contains("主要缺陷")) {
                    fxqxqk2.append(",").append("发现").append("一般缺陷").append(ybqxSize).append("项");
                }else {
                    fxqxqk2.append(",").append("发现").append("一般缺陷").append(ybqxSize).append("项");
                }
            }else { // 不存在严重缺陷
                // 存在主要缺陷
                if (fxqxqk2.toString().contains("主要缺陷")) {
                    fxqxqk2.append(",").append("发现").append("一般缺陷").append(ybqxSize).append("项");
                }else {
                    fxqxqk2.append("发现").append("一般缺陷").append(ybqxSize).append("项");
                }
            }
        }
        String qxqk = "";
        // 没有发现有缺陷
        if (StringUtils.isBlank(fxqxqk2.toString())){
            qxqk = fxqxqk.toString();
        }else {
            qxqk = fxqxqk.toString()+","+fxqxqk2.toString();
        }

        return qxqk;
    }

    @Override
    public String getQxqkByJcxmXxMapInYlqx(Map ylqxJcxmXX) {
        int ybqxSize = (Integer)ylqxJcxmXX.get("cySizeInybqx");
        int zyqxSize = (Integer)ylqxJcxmXX.get("cySizeInzyqx");
        int yzqxSize = (Integer)ylqxJcxmXX.get("cySizeInyzqx");

        // 是否存在缺陷情况
        boolean ybqxExistFlag = (Boolean)ylqxJcxmXX.get("isCyExistInybqx"); // 一般缺陷
        boolean zyqxExistFlag = (Boolean)ylqxJcxmXX.get("isCyExistInzyqx"); // 主要缺陷
        boolean yzqxExistFlag = (Boolean)ylqxJcxmXX.get("isCyExistInyzqx"); // 严重缺陷

        StringBuffer fxqxqk = new StringBuffer("未发现");
        // 未发现严重缺陷
        if (!yzqxExistFlag){
            fxqxqk.append("严重缺陷");
        }

        // 未发现主要缺陷
        if (!zyqxExistFlag){
            // 是否存在严重缺陷
            if (fxqxqk.toString().contains("严重缺陷")){
                fxqxqk.append("和").append("主要缺陷");
            }else {
                fxqxqk.append("主要缺陷");
            }
        }

        // 未发现一般缺陷
        if (!ybqxExistFlag){
            // 存在严重缺陷
            if (fxqxqk.toString().contains("严重缺陷")){
                // 存在主要缺陷
                if (fxqxqk.toString().contains("主要缺陷")) {
                    fxqxqk.replace(fxqxqk.lastIndexOf("和"),fxqxqk.lastIndexOf("和")+1,"、")
                            .append("和").append("一般缺陷");
                }else {
                    fxqxqk.append("和").append("一般缺陷");
                }
            } else {  // 不存在严重缺陷
                // 存在主要缺陷
                if (fxqxqk.toString().contains("主要缺陷")) {
                    fxqxqk.append("和").append("一般缺陷");
                }else {
                    fxqxqk.append("一般缺陷");
                }
            }
        }

        StringBuffer fxqxqk2 = new StringBuffer("");
        // 发现严重缺陷
        if (yzqxExistFlag){
            fxqxqk2.append("发现").append("严重缺陷").append(yzqxSize).append("项");
        }

        // 发现主要缺陷
        if (zyqxExistFlag){
            if (fxqxqk2.toString().contains("严重缺陷")){
                fxqxqk2.append(",").append("发现").append("主要缺陷").append(zyqxSize).append("项");
            }else {
                fxqxqk2.append("发现").append("主要缺陷").append(zyqxSize).append("项");
            }
        }

        // 发现一般缺陷
        if (ybqxExistFlag){
            // 存在严重缺陷
            if (fxqxqk2.toString().contains("严重缺陷")) {
                // 存在主要缺陷
                if (fxqxqk2.toString().contains("主要缺陷")) {
                    fxqxqk2.append(",").append("发现").append("一般缺陷").append(ybqxSize).append("项");
                }else {
                    fxqxqk2.append(",").append("发现").append("一般缺陷").append(ybqxSize).append("项");
                }
            }else { // 不存在严重缺陷
                // 存在主要缺陷
                if (fxqxqk2.toString().contains("主要缺陷")) {
                    fxqxqk2.append(",").append("发现").append("一般缺陷").append(ybqxSize).append("项");
                }else {
                    fxqxqk2.append("发现").append("一般缺陷").append(ybqxSize).append("项");
                }
            }
        }
        String qxqk = "";
        // 没有发现有缺陷
        if (StringUtils.isBlank(fxqxqk2.toString())){
            qxqk = fxqxqk.toString();
        }else {
            qxqk = fxqxqk.toString()+","+fxqxqk2.toString();
        }

        return qxqk;
    }

    @Override
    public String getQxqkByJcxmXxMapInYplt(Map ypltJcxmXX) {
        int ybqxSize = (Integer)ypltJcxmXX.get("ybqxSize");
        int zyqxSize = (Integer)ypltJcxmXX.get("zyqxSize");
        int yzqxSize = (Integer)ypltJcxmXX.get("yzqxSize");

        // 是否存在缺陷情况
        boolean ybqxExistFlag = (Boolean)ypltJcxmXX.get("ybqxExistFlag"); // 一般缺陷
        boolean zyqxExistFlag = (Boolean)ypltJcxmXX.get("zyqxExistFlag"); // 主要缺陷
        boolean yzqxExistFlag = (Boolean)ypltJcxmXX.get("yzqxExistFlag"); // 严重缺陷

        StringBuffer fxqxqk = new StringBuffer("未发现");
        // 未发现严重缺陷
        if (!yzqxExistFlag){
            fxqxqk.append("严重缺陷");
        }

        // 未发现主要缺陷
        if (!zyqxExistFlag){
            // 是否存在严重缺陷
            if (fxqxqk.toString().contains("严重缺陷")){
                fxqxqk.append("和").append("主要缺陷");
            }else {
                fxqxqk.append("主要缺陷");
            }
        }

        // 未发现一般缺陷
        if (!ybqxExistFlag){
            // 存在严重缺陷
            if (fxqxqk.toString().contains("严重缺陷")){
                // 存在主要缺陷
                if (fxqxqk.toString().contains("主要缺陷")) {
                    fxqxqk.replace(fxqxqk.lastIndexOf("和"),fxqxqk.lastIndexOf("和")+1,"、")
                            .append("和").append("一般缺陷");
                }else {
                    fxqxqk.append("和").append("一般缺陷");
                }
            } else {  // 不存在严重缺陷
                // 存在主要缺陷
                if (fxqxqk.toString().contains("主要缺陷")) {
                    fxqxqk.append("和").append("一般缺陷");
                }else {
                    fxqxqk.append("一般缺陷");
                }
            }
        }

        StringBuffer fxqxqk2 = new StringBuffer("");
        // 发现严重缺陷
        if (yzqxExistFlag){
            fxqxqk2.append("发现").append("严重缺陷").append(yzqxSize).append("项");
        }

        // 发现主要缺陷
        if (zyqxExistFlag){
            if (fxqxqk2.toString().contains("严重缺陷")){
                fxqxqk2.append(",").append("发现").append("主要缺陷").append(zyqxSize).append("项");
            }else {
                fxqxqk2.append("发现").append("主要缺陷").append(zyqxSize).append("项");
            }
        }

        // 发现一般缺陷
        if (ybqxExistFlag){
            // 存在严重缺陷
            if (fxqxqk2.toString().contains("严重缺陷")) {
                // 存在主要缺陷
                if (fxqxqk2.toString().contains("主要缺陷")) {
                    fxqxqk2.append(",").append("发现").append("一般缺陷").append(ybqxSize).append("项");
                }else {
                    fxqxqk2.append(",").append("发现").append("一般缺陷").append(ybqxSize).append("项");
                }
            }else { // 不存在严重缺陷
                // 存在主要缺陷
                if (fxqxqk2.toString().contains("主要缺陷")) {
                    fxqxqk2.append(",").append("发现").append("一般缺陷").append(ybqxSize).append("项");
                }else {
                    fxqxqk2.append("发现").append("一般缺陷").append(ybqxSize).append("项");
                }
            }
        }
        String qxqk = "";
        // 没有发现有缺陷
        if (StringUtils.isBlank(fxqxqk2.toString())){
            qxqk = fxqxqk.toString();
        }else {
            qxqk = fxqxqk.toString()+","+fxqxqk2.toString();
        }

        return qxqk;
    }

    @Override
    public String getQxqkByJcxmXxMapInHzp(Map hzpJcxmXX) {
        int ybqxSize = (Integer)hzpJcxmXX.get("ybqxSize");
        int zyqxSize = (Integer)hzpJcxmXX.get("zyqxSize");
        int yzqxSize = (Integer)hzpJcxmXX.get("yzqxSize");

        // 是否存在缺陷情况
        boolean ybqxExistFlag = (Boolean)hzpJcxmXX.get("ybqxExistFlag"); // 一般缺陷
        boolean zyqxExistFlag = (Boolean)hzpJcxmXX.get("zyqxExistFlag"); // 主要缺陷
        boolean yzqxExistFlag = (Boolean)hzpJcxmXX.get("yzqxExistFlag"); // 严重缺陷

        StringBuffer fxqxqk = new StringBuffer("未发现");
        // 未发现严重缺陷
        if (!yzqxExistFlag){
            fxqxqk.append("严重缺陷");
        }

        // 未发现主要缺陷
        if (!zyqxExistFlag){
            // 是否存在严重缺陷
            if (fxqxqk.toString().contains("严重缺陷")){
                fxqxqk.append("和").append("主要缺陷");
            }else {
                fxqxqk.append("主要缺陷");
            }
        }

        // 未发现一般缺陷
        if (!ybqxExistFlag){
            // 存在严重缺陷
            if (fxqxqk.toString().contains("严重缺陷")){
                // 存在主要缺陷
                if (fxqxqk.toString().contains("主要缺陷")) {
                    fxqxqk.replace(fxqxqk.lastIndexOf("和"),fxqxqk.lastIndexOf("和")+1,"、")
                            .append("和").append("一般缺陷");
                }else {
                    fxqxqk.append("和").append("一般缺陷");
                }
            } else {  // 不存在严重缺陷
                // 存在主要缺陷
                if (fxqxqk.toString().contains("主要缺陷")) {
                    fxqxqk.append("和").append("一般缺陷");
                }else {
                    fxqxqk.append("一般缺陷");
                }
            }
        }

        StringBuffer fxqxqk2 = new StringBuffer("");
        // 发现严重缺陷
        if (yzqxExistFlag){
            fxqxqk2.append("发现").append("严重缺陷").append(yzqxSize).append("项");
        }

        // 发现主要缺陷
        if (zyqxExistFlag){
            if (fxqxqk2.toString().contains("严重缺陷")){
                fxqxqk2.append(",").append("发现").append("主要缺陷").append(zyqxSize).append("项");
            }else {
                fxqxqk2.append("发现").append("主要缺陷").append(zyqxSize).append("项");
            }
        }

        // 发现一般缺陷
        if (ybqxExistFlag){
            // 存在严重缺陷
            if (fxqxqk2.toString().contains("严重缺陷")) {
                // 存在主要缺陷
                if (fxqxqk2.toString().contains("主要缺陷")) {
                    fxqxqk2.append(",").append("发现").append("一般缺陷").append(ybqxSize).append("项");
                }else {
                    fxqxqk2.append(",").append("发现").append("一般缺陷").append(ybqxSize).append("项");
                }
            }else { // 不存在严重缺陷
                // 存在主要缺陷
                if (fxqxqk2.toString().contains("主要缺陷")) {
                    fxqxqk2.append(",").append("发现").append("一般缺陷").append(ybqxSize).append("项");
                }else {
                    fxqxqk2.append("发现").append("一般缺陷").append(ybqxSize).append("项");
                }
            }
        }
        String qxqk = "";
        // 没有发现有缺陷
        if (StringUtils.isBlank(fxqxqk2.toString())){
            qxqk = fxqxqk.toString();
        }else {
            qxqk = fxqxqk.toString()+","+fxqxqk2.toString();
        }

        return qxqk;
    }

    @Override
    public String getQxqkByJcxmXxMapInYpzc(Map ypzcJcxmXX) {
        int ybqxSize = (Integer)ypzcJcxmXX.get("cySizeInybqx");
        int zyqxSize = (Integer)ypzcJcxmXX.get("cySizeInzyqx");
        int yzqxSize = (Integer)ypzcJcxmXX.get("cySizeInyzqx");

        // 是否存在缺陷情况
        boolean ybqxExistFlag = (Boolean)ypzcJcxmXX.get("isCyExistInybqx"); // 一般缺陷
        boolean zyqxExistFlag = (Boolean)ypzcJcxmXX.get("isCyExistInzyqx"); // 主要缺陷
        boolean yzqxExistFlag = (Boolean)ypzcJcxmXX.get("isCyExistInyzqx"); // 严重缺陷

        StringBuffer fxqxqk = new StringBuffer("未发现");
        // 未发现严重缺陷
        if (!yzqxExistFlag){
            fxqxqk.append("严重缺陷");
        }

        // 未发现主要缺陷
        if (!zyqxExistFlag){
            // 是否存在严重缺陷
            if (fxqxqk.toString().contains("严重缺陷")){
                fxqxqk.append("和").append("主要缺陷");
            }else {
                fxqxqk.append("主要缺陷");
            }
        }

        // 未发现一般缺陷
        if (!ybqxExistFlag){
            // 存在严重缺陷
            if (fxqxqk.toString().contains("严重缺陷")){
                // 存在主要缺陷
                if (fxqxqk.toString().contains("主要缺陷")) {
                    fxqxqk.replace(fxqxqk.lastIndexOf("和"),fxqxqk.lastIndexOf("和")+1,"、")
                            .append("和").append("一般缺陷");
                }else {
                    fxqxqk.append("和").append("一般缺陷");
                }
            } else {  // 不存在严重缺陷
                // 存在主要缺陷
                if (fxqxqk.toString().contains("主要缺陷")) {
                    fxqxqk.append("和").append("一般缺陷");
                }else {
                    fxqxqk.append("一般缺陷");
                }
            }
        }

        StringBuffer fxqxqk2 = new StringBuffer("");
        // 发现严重缺陷
        if (yzqxExistFlag){
            fxqxqk2.append("发现").append("严重缺陷").append(yzqxSize).append("项");
        }

        // 发现主要缺陷
        if (zyqxExistFlag){
            if (fxqxqk2.toString().contains("严重缺陷")){
                fxqxqk2.append(",").append("发现").append("主要缺陷").append(zyqxSize).append("项");
            }else {
                fxqxqk2.append("发现").append("主要缺陷").append(zyqxSize).append("项");
            }
        }

        // 发现一般缺陷
        if (ybqxExistFlag){
            // 存在严重缺陷
            if (fxqxqk2.toString().contains("严重缺陷")) {
                // 存在主要缺陷
                if (fxqxqk2.toString().contains("主要缺陷")) {
                    fxqxqk2.append(",").append("发现").append("一般缺陷").append(ybqxSize).append("项");
                }else {
                    fxqxqk2.append(",").append("发现").append("一般缺陷").append(ybqxSize).append("项");
                }
            }else { // 不存在严重缺陷
                // 存在主要缺陷
                if (fxqxqk2.toString().contains("主要缺陷")) {
                    fxqxqk2.append(",").append("发现").append("一般缺陷").append(ybqxSize).append("项");
                }else {
                    fxqxqk2.append("发现").append("一般缺陷").append(ybqxSize).append("项");
                }
            }
        }
        String qxqk = "";
        // 没有发现有缺陷
        if (StringUtils.isBlank(fxqxqk2.toString())){
            qxqk = fxqxqk.toString();
        }else {
            qxqk = fxqxqk.toString()+","+fxqxqk2.toString();
        }

        return qxqk;
    }

    @Override
    public Map getJcxmXXInYpsc(String sqsxId) {
        Map map = new HashMap();
        boolean ybqxExistFlag = true;
        boolean zyqxExistFlag = true;
        boolean yzqxExistFlag = true;

        int ybqxSize = 0;
        int zyqxSize = 0;
        int yzqxSize = 0;

        List<SpcySqsxJcxm> ybqxList = spcySqsxJcxmService.list(new LambdaQueryWrapper<SpcySqsxJcxm>()
                .eq(SpcySqsxJcxm::getFsqsxid, sqsxId)
                .eq(SpcySqsxJcxm::getFjcjl, SpcyConstant.REVIEW_RECORD_CONCLUSION_YBQX)
                .orderByAsc(SpcySqsxJcxm::getFtype2)
                .orderByAsc(SpcySqsxJcxm::getFxh)); // 一般缺陷

        if (CollectionUtils.isEmpty(ybqxList)){
            ybqxExistFlag = false;
        }
        ybqxSize = ybqxList.size();

        String fcyybqx = ybqxList.size()+"项。";
        if (CollectionUtils.isNotEmpty(ybqxList)){
            int i = 0;
            for (SpcySqsxJcxm r : ybqxList){
                fcyybqx += "\r\n";
                i++;
                if (org.apache.commons.lang3.StringUtils.isNotBlank(r.getFscjl())) {
                    fcyybqx += i + "、" + r.getFscjl() + "(" + r.getFtype3() + " " + r.getFtype5() + ") ";
                }else {
                    fcyybqx += i + "、"+ "(" + r.getFtype3() + " " + r.getFtype5() + ") ";
                }
            }
        }

        List<SpcySqsxJcxm> zyqxList = spcySqsxJcxmService.list(new LambdaQueryWrapper<SpcySqsxJcxm>()
                .eq(SpcySqsxJcxm::getFsqsxid, sqsxId)
                .eq(SpcySqsxJcxm::getFjcjl, SpcyConstant.REVIEW_RECORD_CONCLUSION_ZYQX)
                .orderByAsc(SpcySqsxJcxm::getFtype2)
                .orderByAsc(SpcySqsxJcxm::getFxh)); // 主要缺陷

        if (CollectionUtils.isEmpty(zyqxList)){
            zyqxExistFlag = false;
        }
        zyqxSize = zyqxList.size();

        String fcyzyqx = zyqxList.size()+"项。";
        if (CollectionUtils.isNotEmpty(zyqxList)){
            int i = 0;
            for (SpcySqsxJcxm r : zyqxList){
                fcyzyqx += "\r\n";
                i++;
                if (org.apache.commons.lang3.StringUtils.isNotBlank(r.getFscjl())) {
                    fcyzyqx += i + "、" + r.getFscjl() + "(" + r.getFtype3() + " " + r.getFtype5() + ") ";
                }else {
                    fcyzyqx += i + "、"+ "(" + r.getFtype3() + " " + r.getFtype5() + ") ";
                }
            }
        }

        List<SpcySqsxJcxm> yzqxList = spcySqsxJcxmService.list(new LambdaQueryWrapper<SpcySqsxJcxm>()
                .eq(SpcySqsxJcxm::getFsqsxid, sqsxId)
                .eq(SpcySqsxJcxm::getFjcjl, SpcyConstant.REVIEW_RECORD_CONCLUSION_YZQX)
                .orderByAsc(SpcySqsxJcxm::getFtype2)
                .orderByAsc(SpcySqsxJcxm::getFxh)); // 严重缺陷

        if (CollectionUtils.isEmpty(yzqxList)){
            yzqxExistFlag = false;
        }
        yzqxSize = yzqxList.size();

        String fcyyzqx = yzqxList.size()+"项。";
        if (CollectionUtils.isNotEmpty(yzqxList)){
            int i = 0;
            for (SpcySqsxJcxm r : yzqxList){
                fcyyzqx += "\r\n";
                i++;
                if (org.apache.commons.lang3.StringUtils.isNotBlank(r.getFscjl())) {
                    fcyyzqx += i + "、" + r.getFscjl() + "(" + r.getFtype3() + " " + r.getFtype5() + ") ";
                }else {
                    fcyyzqx += i + "、"+ "(" + r.getFtype3() + " " + r.getFtype5() + ") ";
                }
            }
        }

        map.put("fcyybqx",fcyybqx);
        map.put("fcyzyqx",fcyzyqx);
        map.put("fcyyzqx",fcyyzqx);

        map.put("ybqxExistFlag",ybqxExistFlag);
        map.put("zyqxExistFlag",zyqxExistFlag);
        map.put("yzqxExistFlag",yzqxExistFlag);

        map.put("ybqxSize",ybqxSize);
        map.put("zyqxSize",zyqxSize);
        map.put("yzqxSize",yzqxSize);

        map.put("fspybqx","0项。");
        map.put("fspzyqx","0项。");
        map.put("fspyzqx","0项。");
        return map;
    }

    @Override
    public Map getJcxmXXInYpzc(String sqsxId){
        Map map = new HashMap();
        boolean isCyExistInybqx = true;
        boolean isCyExistInzyqx = true;
        boolean isCyExistInyzqx = true;

        int cySizeInybqx = 0;
        int cySizeInzyqx = 0;
        int cySizeInyzqx = 0;

        // 严重缺陷
        List<SpcySqsxJcxm> cyyzqxList = new ArrayList<>();

        // 一般缺陷
        List<SpcySqsxJcxm> cyybqxList = new ArrayList<>();

        // 主要缺陷
        List<SpcySqsxJcxm> cyzyqxList = new ArrayList<>();

        /** 药品注册： ftype1 科室, ftype2 检查类型,ftype3 大类,ftype4 类型,
         *   ftype5 序号, ftype6 (一般项目 |一般重点项目 | 重点项目) 项目类型，ftype7 条款号, fcontent1 检查项目,fcontent2 检查要点
         */
        // ftype7 存在一个*为重点项目，无*（或者为空）为一般项目。

        // 不符合 一般项目
        cyybqxList = spcySqsxJcxmService.list(new LambdaQueryWrapper<SpcySqsxJcxm>()
                .eq(SpcySqsxJcxm::getFsqsxid, sqsxId)
                .eq(SpcySqsxJcxm::getFjcjl, SpcyConstant.REVIEW_RECORD_CONCLUSION_BFH)
                .and(
                        q->q.notLike(SpcySqsxJcxm::getFtype7, "*").or().isNull(SpcySqsxJcxm::getFtype7)
                )
                .orderByAsc(SpcySqsxJcxm::getFxh));

        // 不符合 重点项目
        cyyzqxList = spcySqsxJcxmService.list(new LambdaQueryWrapper<SpcySqsxJcxm>()
                .eq(SpcySqsxJcxm::getFsqsxid, sqsxId)
                .eq(SpcySqsxJcxm::getFjcjl, SpcyConstant.REVIEW_RECORD_CONCLUSION_BFH)
                .like(SpcySqsxJcxm::getFtype7, "*")
                .orderByAsc(SpcySqsxJcxm::getFxh));

        if (CollectionUtils.isEmpty(cyyzqxList)){
            isCyExistInyzqx = false;
        }else {
            cySizeInyzqx = cyyzqxList.size(); // 查验 缺陷数
        }

        int count = 0;
        String fcyyzqx = ""; // 查验-严重缺陷

        if (CollectionUtils.isNotEmpty(cyyzqxList)){
            for (SpcySqsxJcxm r : cyyzqxList){
                count++;

                if (org.apache.commons.lang3.StringUtils.isNotBlank(r.getFscjl())) {

                    fcyyzqx += count + "、" + "规范 " + r.getFtype3() + "：" + r.getFscjl() + " (" + "指导原则" + r.getFtype7() + ")；";

                }else {

                    fcyyzqx += count + "、" + "规范 " + r.getFtype3() + "：" + " (" + "指导原则" + r.getFtype7() + ")；";

                }

                fcyyzqx += "\r";
            }
        }

        /**
         * 一般缺陷
         */
        if (CollectionUtils.isEmpty(cyybqxList)){
            isCyExistInybqx = false;
        }else {
            cySizeInybqx = cyybqxList.size();  // 查验 缺陷数
        }

        String fcyybqx = ""; // 查验 一般缺陷

        if (CollectionUtils.isNotEmpty(cyybqxList)){
            for (SpcySqsxJcxm r : cyybqxList){
                count++;

                if (org.apache.commons.lang3.StringUtils.isNotBlank(r.getFscjl())) {
                    if (StringUtils.isNotBlank(r.getFtype7())) {
                        fcyybqx += count + "、" + "规范 " + r.getFtype6() + "：" + r.getFscjl() + " (" + "指导原则" + r.getFtype7() + ")；";
                    }else {
                        fcyybqx += count + "、" + "规范 " + r.getFtype6() + "：" + r.getFscjl() + " (指导原则)；";
                    }
                }else {
                    if (StringUtils.isNotBlank(r.getFtype7())) {
                        fcyybqx += count + "、" + "规范 " + r.getFtype6() + "：" + " (" + "指导原则" + r.getFtype7() + ")；";
                    }else {
                        fcyybqx += count + "、" + "规范 " + r.getFtype6() + "：" + " (指导原则)；";
                    }
                }

                fcyybqx += "\r";
            }
        }

        /**
         * 主要缺陷
         */
        if (CollectionUtils.isEmpty(cyzyqxList)){
            isCyExistInzyqx = false;
        }else {
            cySizeInzyqx = cyzyqxList.size();
        }

        String fcyzyqx = cySizeInzyqx+"项。"; // 查验-主要缺陷

        map.put("fcyybqx",fcyybqx);
        map.put("fcyzyqx",fcyzyqx);
        map.put("fcyyzqx",fcyyzqx);

        map.put("isCyExistInybqx",isCyExistInybqx);
        map.put("isCyExistInzyqx",isCyExistInzyqx);
        map.put("isCyExistInyzqx",isCyExistInyzqx);


        map.put("cySizeInybqx",cySizeInybqx);
        map.put("cySizeInzyqx",cySizeInzyqx);
        map.put("cySizeInyzqx",cySizeInyzqx);


        return map;
    }

    @Override
    public Map getJcxmXXInYplt(String sqsxId){
        Map map = new HashMap();
        int total = 0;
        boolean ybqxExistFlag = true;
        boolean zyqxExistFlag = true;
        boolean yzqxExistFlag = true;

        int ybqxSize = 0; // 现场检查 - 一般缺陷 数量
        int zyqxSize = 0; // 现场检查 - 主要缺陷 数量
        int yzqxSize = 0; // 现场检查 - 严重缺陷 数量

        int zxybqxSize = 0; // 中心 - 一般缺陷 -数量
        int zxzyqxSize = 0; // 中心 - 主要 数量
        int zxyzqxSize = 0; // 中心 - 严重 数量
        int count = 0; // 中心结论-排序

        // ftype1 科室, ftype2 类型,ftype3 章节,ftype4 章节标题,ftype5 条款, ftype6 (一般项目 |一般重点项目 | 重点项目) 项目类型，ftype7 条款号, fcontent1 审查内容
        List<SpcySqsxJcxm> totalList = spcySqsxJcxmService.list(new LambdaQueryWrapper<SpcySqsxJcxm>()
                .eq(SpcySqsxJcxm::getFsqsxid, sqsxId));
        total = totalList.size();

        /**
         * 一般缺陷
         */
        // 现场检查 结论
        List<SpcySqsxJcxm> ybqxList = spcySqsxJcxmService.list(new LambdaQueryWrapper<SpcySqsxJcxm>()
                .eq(SpcySqsxJcxm::getFsqsxid, sqsxId)
                .eq(SpcySqsxJcxm::getFjcjl, SpcyConstant.REVIEW_RECORD_CONCLUSION_YBQX)
                .orderByAsc(SpcySqsxJcxm::getFtype2)
                .orderByAsc(SpcySqsxJcxm::getFxh)); // 一般缺陷

        // 技术审查 - 结论
        List<SpcySqsxJcxm> zxybqxList = new ArrayList<>();
        /*List<SpcySqsxJcxm> zxybqxList = spcySqsxJcxmService.list(new LambdaQueryWrapper<SpcySqsxJcxm>()
                .eq(SpcySqsxJcxm::getFsqsxid, sqsxId)
                .isNotNull(SpcySqsxJcxm::getFgjshjl)
                .eq(SpcySqsxJcxm::getFgjshjl, SpcyConstant.REVIEW_RECORD_CONCLUSION_YBQX)
                .orderByAsc(SpcySqsxJcxm::getFtype2)
                .orderByAsc(SpcySqsxJcxm::getFxh)); // 一般缺陷*/
        if (CollectionUtils.isNotEmpty(totalList)){
            zxybqxList = totalList.stream()
                    .filter(f->StringUtils.isNotBlank(f.getFgjshjl())
                    && f.getFgjshjl().equals(SpcyConstant.REVIEW_RECORD_CONCLUSION_YBQX))
                    .collect(Collectors.toList());
        }

        // 技术审查 - 审查内容
        List<SpcySqsxJcxm> jsscnrList = spcySqsxJcxmService.list(new LambdaQueryWrapper<SpcySqsxJcxm>()
                .eq(SpcySqsxJcxm::getFsqsxid, sqsxId)
                .isNotNull(SpcySqsxJcxm::getFgjqk)
                .orderByAsc(SpcySqsxJcxm::getFtype2)
                .orderByAsc(SpcySqsxJcxm::getFxh)); // 一般缺陷

        if (CollectionUtils.isEmpty(ybqxList)){
            ybqxExistFlag = false;
        }
        ybqxSize = ybqxList.size();
        zxybqxSize = zxybqxList.size();

        String fcyybqx = ybqxList.size()+"项。";
        String zxfcyybqx = ""; // 中心审查意见 一般缺陷

        // 现场检查 - 一般缺陷
        if (CollectionUtils.isNotEmpty(ybqxList)){
            int i = 0;
            for (SpcySqsxJcxm r : ybqxList){
                fcyybqx += "\r";
                i++;
                if (org.apache.commons.lang3.StringUtils.isNotBlank(r.getFscjl())) {
                    fcyybqx += i + "、" + r.getFtype7() + " " + r.getFscjl() + "\r";
//                    fcyybqx += "审查意见：" + r.getFscjl();
                }else {
                    fcyybqx += i + "、" + r.getFtype7() + " " + "无。" + "\r";
//                    fcyybqx += "审查意见：" + r.getFscjl();
                }
            }
        }

        // 技术审查 一般缺陷
        if (CollectionUtils.isNotEmpty(jsscnrList)){
            for (SpcySqsxJcxm r : jsscnrList){
//                zxfcyybqx += "\r\n";
                count++;
                if (org.apache.commons.lang3.StringUtils.isNotBlank(r.getFscjl())) {
                    zxfcyybqx += "\r\t\t" + count + "、" + r.getFtype7() + " " + r.getFscjl() + "\r";
                    if (StringUtils.isNotBlank(r.getFgjqk())) {
                        zxfcyybqx += "\t\t审查意见：" + r.getFgjqk();
                    }else {
                        zxfcyybqx += "\t\t审查意见：无。";
                    }
                }else {
                    zxfcyybqx += "\r\t\t"+count + "、" + r.getFtype7() + " " + "无。" + "\r";
                    if (StringUtils.isNotBlank(r.getFgjqk())) {
                        zxfcyybqx += "\t\t审查意见：" + r.getFgjqk();
                    }else {
                        zxfcyybqx += "\t\t审查意见：无。";
                    }
                }
            }
        }

        /**
         * 主要缺陷
         */
        // 现场检查- 结论
        List<SpcySqsxJcxm> zyqxList = spcySqsxJcxmService.list(new LambdaQueryWrapper<SpcySqsxJcxm>()
                .eq(SpcySqsxJcxm::getFsqsxid, sqsxId)
                .eq(SpcySqsxJcxm::getFjcjl, SpcyConstant.REVIEW_RECORD_CONCLUSION_ZYQX)
                .orderByAsc(SpcySqsxJcxm::getFtype2)
                .orderByAsc(SpcySqsxJcxm::getFxh)); // 主要缺陷

        // 技术审查 - 结论
        List<SpcySqsxJcxm> zxzyqxList = new ArrayList<>();
        /*List<SpcySqsxJcxm> zxzyqxList = spcySqsxJcxmService.list(new LambdaQueryWrapper<SpcySqsxJcxm>()
                .eq(SpcySqsxJcxm::getFsqsxid, sqsxId)
                .isNotNull(SpcySqsxJcxm::getFgjshjl)
                .eq(SpcySqsxJcxm::getFgjshjl, SpcyConstant.REVIEW_RECORD_CONCLUSION_ZYQX)
                .orderByAsc(SpcySqsxJcxm::getFtype2)
                .orderByAsc(SpcySqsxJcxm::getFxh)); // 主要缺陷*/
        if (CollectionUtils.isNotEmpty(totalList)){
            zxzyqxList = totalList.stream()
                    .filter(f->StringUtils.isNotBlank(f.getFgjshjl())
                            && f.getFgjshjl().equals(SpcyConstant.REVIEW_RECORD_CONCLUSION_ZYQX))
                    .collect(Collectors.toList());
        }

        if (CollectionUtils.isEmpty(zyqxList)){
            zyqxExistFlag = false;
        }
        zyqxSize = zyqxList.size();
        zxzyqxSize = zxzyqxList.size();

        String fcyzyqx = zyqxList.size()+"项。";
        String zxfcyzyqx = ""; // 中心审查意见 主要缺陷

        // 现场检查 - 主要
        if (CollectionUtils.isNotEmpty(zyqxList)){
            int i = 0;
            for (SpcySqsxJcxm r : zyqxList){
                fcyzyqx += "\r";
                i++;
                if (org.apache.commons.lang3.StringUtils.isNotBlank(r.getFscjl())) {
                    fcyzyqx += i + "、" + r.getFtype7() + " " + r.getFscjl() + "\r";
//                    fcyzyqx += "审查意见：" + r.getFscjl();
                }else {
                    fcyzyqx += i + "、" + r.getFtype7() + " " + "无。" + "\r";
//                    fcyzyqx += "审查意见：" + r.getFscjl();
                }
            }
        }

        // 技术审查 - 主要
        if (CollectionUtils.isNotEmpty(zxzyqxList)){
           /* for (SpcySqsxJcxm r : zxzyqxList){
                zxfcyzyqx += "\r\n";
                count++;
                if (org.apache.commons.lang3.StringUtils.isNotBlank(r.getFscjl())) {
                    zxfcyzyqx += count + "、" + r.getFtype7() + " " + r.getFscjl() + "\r\n";
                    if (StringUtils.isNotBlank(r.getFgjqk())) {
                        zxfcyzyqx += "审查意见：" + r.getFgjqk();
                    }else {
                        zxfcyzyqx += "审查意见：无。";
                    }
                }else {
                    zxfcyzyqx += count + "、" + r.getFtype7() + " " + "无。" + "\r\n";
                    if (StringUtils.isNotBlank(r.getFgjqk())) {
                        zxfcyzyqx += "审查意见：" + r.getFgjqk();
                    }else {
                        zxfcyzyqx += "审查意见：无。";
                    }
                }
            }*/
        }

        /**
         * 严重缺陷
         */
        // 现场检查 - 结论
        List<SpcySqsxJcxm> yzqxList = spcySqsxJcxmService.list(new LambdaQueryWrapper<SpcySqsxJcxm>()
                .eq(SpcySqsxJcxm::getFsqsxid, sqsxId)
                .eq(SpcySqsxJcxm::getFjcjl, SpcyConstant.REVIEW_RECORD_CONCLUSION_YZQX)
                .orderByAsc(SpcySqsxJcxm::getFtype2)
                .orderByAsc(SpcySqsxJcxm::getFxh)); // 严重缺陷

        // 技术审查 - 严重缺陷
        List<SpcySqsxJcxm> zxyzqxList = new ArrayList<>();
        /*List<SpcySqsxJcxm> zxyzqxList = spcySqsxJcxmService.list(new LambdaQueryWrapper<SpcySqsxJcxm>()
                .eq(SpcySqsxJcxm::getFsqsxid, sqsxId)
                .isNotNull(SpcySqsxJcxm::getFgjshjl)
                .eq(SpcySqsxJcxm::getFgjshjl, SpcyConstant.REVIEW_RECORD_CONCLUSION_YZQX)
                .orderByAsc(SpcySqsxJcxm::getFtype2)
                .orderByAsc(SpcySqsxJcxm::getFxh)); // 严重缺陷*/
        if (CollectionUtils.isNotEmpty(totalList)){
            zxyzqxList = totalList.stream()
                    .filter(f->StringUtils.isNotBlank(f.getFgjshjl())
                            && f.getFgjshjl().equals(SpcyConstant.REVIEW_RECORD_CONCLUSION_YZQX))
                    .collect(Collectors.toList());
        }

        if (CollectionUtils.isEmpty(yzqxList)){
            yzqxExistFlag = false;
        }
        yzqxSize = yzqxList.size();
        zxyzqxSize = zxyzqxList.size();

        String fcyyzqx = yzqxList.size()+"项。";
        String zxfcyyzqx = ""; // 中心审查意见 严重缺陷

        // 现场检查 - 严重
        if (CollectionUtils.isNotEmpty(yzqxList)){
            int i = 0;
            for (SpcySqsxJcxm r : yzqxList){
                fcyyzqx += "\r";
                i++;
                if (org.apache.commons.lang3.StringUtils.isNotBlank(r.getFscjl())) {
                    fcyyzqx += i + "、" + r.getFtype7() + " " + r.getFscjl() + "\r";
//                    fcyyzqx += "审查意见：" + r.getFscjl();
                }else {
                    fcyyzqx += i + "、" + r.getFtype7() + " " + "无。" + "\r";
//                    fcyyzqx += "审查意见：" + r.getFscjl();
                }
            }
        }

        // 技术审查 - 严重
        if (CollectionUtils.isNotEmpty(zxyzqxList)){
            /*for (SpcySqsxJcxm r : zxyzqxList){
                zxfcyyzqx += "\r\n";
                count++;
                if (org.apache.commons.lang3.StringUtils.isNotBlank(r.getFscjl())) {
                        zxfcyyzqx += count + "、" + r.getFtype7() + " " + r.getFscjl() + "\r\n";
                    if (StringUtils.isNotBlank(r.getFgjqk())) {
                        zxfcyyzqx += "审查意见：" + r.getFgjqk();
                    }else {
                        zxfcyyzqx += "审查意见：无。";
                    }
                }else {
                    zxfcyyzqx += count + "、" + r.getFtype7() + " " + "无。" + "\r\n";
                    if (StringUtils.isNotBlank(r.getFgjqk())) {
                        zxfcyyzqx += "审查意见：" + r.getFgjqk();
                    }else {
                        zxfcyyzqx += "审查意见：无。";
                    }
                }
            }*/
        }

        // 总数
        map.put("total",total);

        // 现场检查 结论
        map.put("fcyybqx",fcyybqx);
        map.put("fcyzyqx",fcyzyqx);
        map.put("fcyyzqx",fcyyzqx);

        // 中心-技术审查-结论
        map.put("zxfcyybqx",zxfcyybqx);
        map.put("zxfcyzyqx",zxfcyzyqx);
        map.put("zxfcyyzqx",zxfcyyzqx);

        map.put("ybqxExistFlag",ybqxExistFlag);
        map.put("zyqxExistFlag",zyqxExistFlag);
        map.put("yzqxExistFlag",yzqxExistFlag);

        // 现场检查 数量
        map.put("ybqxSize",ybqxSize);
        map.put("zyqxSize",zyqxSize);
        map.put("yzqxSize",yzqxSize);

        // 中心-技术审查-数量
        map.put("zxybqxSize",zxybqxSize);
        map.put("zxzyqxSize",zxzyqxSize);
        map.put("zxyzqxSize",zxyzqxSize);

        map.put("fspybqx","0项。");
        map.put("fspzyqx","0项。");
        map.put("fspyzqx","0项。");
        return map;
    }

    @Override
    public Map getJcxmXXInYlqx(String sqsxId){
        Map map = new HashMap();
        boolean isCyExistInybqx = true;
        boolean isCyExistInzyqx = true;
        boolean isCyExistInyzqx = true;

        boolean isSpExistInybqx = true;
        boolean isSpExistInzyqx = true;
        boolean isSpExistInyzqx = true;

        int cySizeInybqx = 0;
        int cySizeInzyqx = 0;
        int cySizeInyzqx = 0;

        int spSizeInybqx = 0;
        int spSizeInzyqx = 0;
        int spSizeInyzqx = 0;

        // ftype3 类型，ftype4 项目类型，ftype5 章节，ftype6 条款, ftype7 指导原则条款, ftype8 附录条款, fcontent1 规范内容, fcontent2 指导原则内容,fcontent3 附录内容

        // 不符合
        List<SpcySqsxJcxm> yzqxList = spcySqsxJcxmService.list(new LambdaQueryWrapper<SpcySqsxJcxm>()
                .eq(SpcySqsxJcxm::getFsqsxid, sqsxId)
                .eq(SpcySqsxJcxm::getFjcjl, SpcyConstant.REVIEW_RECORD_CONCLUSION_BFH)
                .orderByAsc(SpcySqsxJcxm::getFxh)); // 不符合

        // 严重缺陷
        List<SpcySqsxJcxm> cyyzqxList = new ArrayList<>();
        List<SpcySqsxJcxm> spyzqxList = new ArrayList<>();

        // 一般缺陷
        List<SpcySqsxJcxm> cyybqxList = new ArrayList<>();
        List<SpcySqsxJcxm> spybqxList = new ArrayList<>();

        // 主要缺陷
        List<SpcySqsxJcxm> cyzyqxList = new ArrayList<>();
        List<SpcySqsxJcxm> spzyqxList = new ArrayList<>();

        if (CollectionUtils.isNotEmpty(yzqxList)){
            // 关键项目
            cyyzqxList = yzqxList.stream().filter(x -> org.apache.commons.lang3.StringUtils.isNotBlank(x.getFtype2())
                    && x.getFtype2().equals(SpcyConstant.JCXM_TYPE_JCXM)
                    && StringUtils.isNotBlank(x.getFtype4())
                    && x.getFtype4().equals(SpcyConstant.JCXM_ZDXM))
                    .collect(Collectors.toList());

            // 一般项目
            cyybqxList = yzqxList.stream().filter(x -> org.apache.commons.lang3.StringUtils.isNotBlank(x.getFtype2())
                    && x.getFtype2().equals(SpcyConstant.JCXM_TYPE_JCXM)
                    && StringUtils.isNotBlank(x.getFtype4())
                    && x.getFtype4().equals(SpcyConstant.JCXM_YBXM))
                    .collect(Collectors.toList());

            /*spyzqxList = yzqxList.stream().filter(x -> org.apache.commons.lang3.StringUtils.isNotBlank(x.getFtype2())
                    && x.getFtype2().equals(SpcyConstant.JCXM_TYPE_SPXM)).collect(Collectors.toList());*/
        }

        if (CollectionUtils.isEmpty(cyyzqxList)){
            isCyExistInyzqx = false;
        }else {
            cySizeInyzqx = cyyzqxList.size(); // 查验 缺陷数
        }

        if (CollectionUtils.isEmpty(spyzqxList)){
            isSpExistInyzqx = false;
        }else {
            spSizeInyzqx = spyzqxList.size(); // 审评 缺陷数
        }

        int count = 0;
        String fcyyzqx = ""; // 查验-严重缺陷
        String fspyzqx = spSizeInyzqx+"项"; // 审评

        if (CollectionUtils.isNotEmpty(cyyzqxList)){
            for (SpcySqsxJcxm r : cyyzqxList){
                count++;
                if (org.apache.commons.lang3.StringUtils.isNotBlank(r.getFscjl())) {
                    if (StringUtils.isNotBlank(r.getFtype6())) {
                        fcyyzqx += count + "、" + "规范" + r.getFtype6() + "：" + r.getFscjl() + " (" + "指导原则" + r.getFtype7() + ")；";
                    }else {
                        fcyyzqx += count + "、" + "附录" + r.getFtype8() + "：" + r.getFscjl() + " (" + "指导原则" + r.getFtype7() + ")；";
                    }
                }else {
                    if (StringUtils.isNotBlank(r.getFtype6())) {
                        fcyyzqx += count + "、" + "规范" + r.getFtype6() + "：" + " (" + "指导原则" + r.getFtype7() + ")；";
                    }else {
                        fcyyzqx += count + "、" + "附录" + r.getFtype8() + "：" + " (" + "指导原则" + r.getFtype7() + ")；";
                    }
                }
                fcyyzqx += "\r\n";
            }
        }

        /**
         * 一般缺陷
         */

        if (CollectionUtils.isEmpty(cyybqxList)){
            isCyExistInybqx = false;
        }else {
            cySizeInybqx = cyybqxList.size();  // 查验 缺陷数
        }

        if (CollectionUtils.isEmpty(spybqxList)){
            isSpExistInybqx = false;
        }else {
            spSizeInybqx = spybqxList.size(); // 审评 缺陷数
        }

//        String fcyybqx = cySizeInybqx+"项"; // 一般缺陷
        String fcyybqx = ""; // 查验 一般缺陷
        String fspybqx = spSizeInybqx+"项"; // 审评 一般缺陷

        if (CollectionUtils.isNotEmpty(cyybqxList)){
            for (SpcySqsxJcxm r : cyybqxList){
                count++;
                if (org.apache.commons.lang3.StringUtils.isNotBlank(r.getFscjl())) {
                    if (StringUtils.isNotBlank(r.getFtype6())) {
                        fcyybqx += count + "、" + "规范" + r.getFtype6() + "：" + r.getFscjl() + " (" + "指导原则" + r.getFtype7() + ")；";
                    }else {
                        fcyybqx += count + "、" + "附录"+ r.getFtype8() + "：" + r.getFscjl() + " (" + "指导原则" + r.getFtype7() + ")；";
                    }
                }else {
                    if (StringUtils.isNotBlank(r.getFtype6())) {
                        fcyybqx += count + "、" + "规范" + r.getFtype6() + "：" + " (" + "指导原则" + r.getFtype7() + ")；";
                    }else {
                        fcyybqx += count + "、" + "附录" + r.getFtype8() + "：" + " (" + "指导原则" + r.getFtype7() + ")；";
                    }
                }
                fcyybqx += "\r\n";
            }
        }


        /**
         * 主要缺陷
         */

        if (CollectionUtils.isEmpty(cyzyqxList)){
            isCyExistInzyqx = false;
        }else {
            cySizeInzyqx = cyzyqxList.size();
        }

        if (CollectionUtils.isEmpty(spzyqxList)){
            isSpExistInzyqx = false;
        }else {
            spSizeInzyqx = spzyqxList.size();
        }

        String fcyzyqx = cySizeInzyqx+"项。"; // 查验-主要缺陷
        String fspzyqx = spSizeInzyqx+"项。"; // 审评-主要缺陷



        map.put("fcyybqx",fcyybqx);
        map.put("fcyzyqx",fcyzyqx);
        map.put("fcyyzqx",fcyyzqx);

        map.put("fspybqx",fspybqx);
        map.put("fspzyqx",fspzyqx);
        map.put("fspyzqx",fspyzqx);

        map.put("isCyExistInybqx",isCyExistInybqx);
        map.put("isCyExistInzyqx",isCyExistInzyqx);
        map.put("isCyExistInyzqx",isCyExistInyzqx);

        map.put("isSpExistInybqx",isSpExistInybqx);
        map.put("isSpExistInzyqx",isSpExistInzyqx);
        map.put("isSpExistInyzqx",isSpExistInyzqx);

        map.put("cySizeInybqx",cySizeInybqx);
        map.put("cySizeInzyqx",cySizeInzyqx);
        map.put("cySizeInyzqx",cySizeInyzqx);

        map.put("spSizeInybqx",spSizeInybqx);
        map.put("spSizeInzyqx",spSizeInzyqx);
        map.put("spSizeInyzqx",spSizeInyzqx);

        return map;
    }

    @Override
    public Map getJcxmXXInHzp(String sqsxId){
        Map map = new HashMap();

        // ftype1 科室,ftype2 类型, ftype3 类型，ftype4 项目类型，ftype5 章节，ftype6 条款, ftype7 指导原则条款, ftype8 附录条款
        // fcontent1 化妆品生产质量管理规范条款内容, fcontent2 指导原则内容,fcontent3 附录内容

        boolean ybqxExistFlag = false;  // 一般缺陷，是否存在
        boolean zyqxExistFlag = false;  // 主要缺陷，是否存在
        boolean yzqxExistFlag = false;  // 严重缺陷，是否存在

        int ybqxSize = 0; // 现场检查 - 一般缺陷 数量
        int zyqxSize = 0; // 现场检查 - 主要缺陷 数量
        int yzqxSize = 0; // 现场检查 - 严重缺陷 数量

        StringBuffer fcyybqx = new StringBuffer(); // 一般
        StringBuffer fcyzyqx = new StringBuffer(); // 主要
        StringBuffer fcyyzqx = new StringBuffer(); // 严重

        int gjxmbfhsl = 0; // 关键项目 - 不符合 -数量
        int gjxmxcsl = 0; // 关键项目 - 瑕疵 -数量
        int zdxmbfhsl = 0; // 重点项目 - 不符合 -数量
        int zdxmxcsl = 0; // 重点项目 - 瑕疵 -数量
        int ybxmbfhsl = 0; // 一般项目 - 不符合 -数量
        int ybxmxcsl = 0; // 一般项目 - 瑕疵 -数量

        StringBuffer fgjxmbfhs = new StringBuffer(); // 关键项目 - 不符合 -结论
        StringBuffer fgjxmxcs = new StringBuffer(); // 关键项目 - 瑕疵 -结论
        StringBuffer fzdxmbfhs = new StringBuffer(); // 重点项目 - 不符合 -结论
        StringBuffer fzdxmxcs = new StringBuffer(); // 重点项目 - 瑕疵 -结论
        StringBuffer fybxmbfhs = new StringBuffer(); // 一般项目 - 不符合 -结论
        StringBuffer fybxmxcs = new StringBuffer(); // 一般项目 - 瑕疵 -结论


        // 关键项目
        List<SpcySqsxJcxm> gjxmList = spcySqsxJcxmService.list(new LambdaQueryWrapper<SpcySqsxJcxm>()
                .eq(SpcySqsxJcxm::getFsqsxid, sqsxId)
                .eq(SpcySqsxJcxm::getFtype6, SpcyConstant.getJcxmSfzdxm(SpcyConstant.YWFL_CODE_HZP,2))
                .isNotNull(SpcySqsxJcxm::getFtype6)
                .orderByAsc(SpcySqsxJcxm::getFxh));

        int index = 1;
        if (CollectionUtils.isNotEmpty(gjxmList)){

            // 不符合规定
            List<SpcySqsxJcxm> bfhList = gjxmList.stream()
                    .filter(f -> StringUtils.isNotBlank(f.getFjcjl())
                            && f.getFjcjl().equals(SpcyConstant.REVIEW_RECORD_CONCLUSION_BFHGD))
                    .collect(Collectors.toList());
            gjxmbfhsl = bfhList.size();

            if (CollectionUtils.isNotEmpty(bfhList)){
                yzqxExistFlag = true;

                int order = 1;
                for (SpcySqsxJcxm jcxm : bfhList){
                    fcyyzqx.append(" ").append(index).append("、");
                    if (StringUtils.isNotBlank(jcxm.getFscjl())) {
                        fcyyzqx.append(jcxm.getFscjl()).append(" ").append("(");
                    }else {
                        fcyyzqx.append(" ").append("(");
                    }
                    fcyyzqx.append(jcxm.getFtype7()).append(" ").append(jcxm.getFtype5());
                    fcyyzqx.append(")").append("\r");
                    index++;
                    /*fcyyzqx.append(jcxm.getFtype4()).append(" ").append(jcxm.getFtype5()).append(" ");
                    fcyyzqx.append(jcxm.getFtype7()).append(" ").append(jcxm.getFscjl()).append("\r");
                    */

                    fgjxmbfhs.append(" ").append(order).append("、");
                    if (StringUtils.isNotBlank(jcxm.getFscjl())) {
                        fgjxmbfhs.append(jcxm.getFscjl()).append(" ").append("(");
                    }else {
                        fgjxmbfhs.append(" ").append("(");
                    }
                    fgjxmbfhs.append(jcxm.getFtype7()).append(" ").append(jcxm.getFtype5());
                    fgjxmbfhs.append(")").append("\r");
                    order++;
                }
            }

            // 瑕疵
            List<SpcySqsxJcxm> xcList = gjxmList.stream()
                    .filter(f -> StringUtils.isNotBlank(f.getFjcjl())
                            && f.getFjcjl().equals(SpcyConstant.REVIEW_RECORD_CONCLUSION_XC))
                    .collect(Collectors.toList());
            gjxmxcsl = xcList.size();

            if (CollectionUtils.isNotEmpty(xcList)){
                yzqxExistFlag = true;

                int order = 1;
                for (SpcySqsxJcxm jcxm : xcList){
                    fcyyzqx.append(" ").append(index).append("、 ");
                    if (StringUtils.isNotBlank(jcxm.getFscjl())) {
                        fcyyzqx.append(jcxm.getFscjl()).append(" ").append("(");
                    }else {
                        fcyyzqx.append(" ").append("(");
                    }
                    fcyyzqx.append(jcxm.getFtype7()).append(" ").append(jcxm.getFtype5());
                    fcyyzqx.append(")").append("\r");
                    index++;

                    fgjxmxcs.append(" ").append(order).append("、 ");
                    if (StringUtils.isNotBlank(jcxm.getFscjl())) {
                        fgjxmxcs.append(jcxm.getFscjl()).append(" ").append("(");
                    }else {
                        fgjxmxcs.append(" ").append("(");
                    }
                    fgjxmxcs.append(jcxm.getFtype7()).append(" ").append(jcxm.getFtype5());
                    fgjxmxcs.append(")").append("\r");
                    order++;
                }
            }

            yzqxSize = gjxmbfhsl + gjxmxcsl; // 数量
        }

        // 重点项目
        List<SpcySqsxJcxm> zdxmList = spcySqsxJcxmService.list(new LambdaQueryWrapper<SpcySqsxJcxm>()
                .eq(SpcySqsxJcxm::getFsqsxid, sqsxId)
                .eq(SpcySqsxJcxm::getFtype6, SpcyConstant.getJcxmSfzdxm(SpcyConstant.YWFL_CODE_HZP,1))
                .isNotNull(SpcySqsxJcxm::getFtype6)
                .orderByAsc(SpcySqsxJcxm::getFxh));

        if (CollectionUtils.isNotEmpty(zdxmList)){

            // 不符合规定
            List<SpcySqsxJcxm> bfhList = zdxmList.stream()
                    .filter(f -> StringUtils.isNotBlank(f.getFjcjl())
                            && f.getFjcjl().equals(SpcyConstant.REVIEW_RECORD_CONCLUSION_BFHGD))
                    .collect(Collectors.toList());
            zdxmbfhsl = bfhList.size();

            if (CollectionUtils.isNotEmpty(bfhList)){
                zyqxExistFlag = true;

                int order = 1;
                for (SpcySqsxJcxm jcxm : bfhList){
                    fcyzyqx.append(" ").append(index).append("、 ");
                    if (StringUtils.isNotBlank(jcxm.getFscjl())) {
                        fcyzyqx.append(jcxm.getFscjl()).append(" ").append("(");
                    }else {
                        fcyzyqx.append(" ").append("(");
                    }
                    fcyzyqx.append(jcxm.getFtype7()).append(" ").append(jcxm.getFtype5());
                    fcyzyqx.append(")").append("\r");
                    index++;

                    fzdxmbfhs.append(" ").append(order).append("、 ");
                    if (StringUtils.isNotBlank(jcxm.getFscjl())) {
                        fzdxmbfhs.append(jcxm.getFscjl()).append(" ").append("(");
                    }else {
                        fzdxmbfhs.append(" ").append("(");
                    }
                    fzdxmbfhs.append(jcxm.getFtype7()).append(" ").append(jcxm.getFtype5());
                    fzdxmbfhs.append(")").append("\r");
                    order++;
                }
            }

            // 瑕疵
            List<SpcySqsxJcxm> xcList = zdxmList.stream()
                    .filter(f -> StringUtils.isNotBlank(f.getFjcjl())
                            && f.getFjcjl().equals(SpcyConstant.REVIEW_RECORD_CONCLUSION_XC))
                    .collect(Collectors.toList());
            zdxmxcsl = xcList.size();

            if (CollectionUtils.isNotEmpty(xcList)){
                zyqxExistFlag = true;

                int order = 1;
                for (SpcySqsxJcxm jcxm : xcList){
                    fcyzyqx.append(" ").append(index).append("、 ");
                    if (StringUtils.isNotBlank(jcxm.getFscjl())) {
                        fcyzyqx.append(jcxm.getFscjl()).append(" ").append("(");
                    }else {
                        fcyzyqx.append(" ").append("(");
                    }
                    fcyzyqx.append(jcxm.getFtype7()).append(" ").append(jcxm.getFtype5());
                    fcyzyqx.append(")").append("\r");
                    index++;

                    fzdxmxcs.append(" ").append(order).append("、 ");
                    if (StringUtils.isNotBlank(jcxm.getFscjl())) {
                        fzdxmxcs.append(jcxm.getFscjl()).append(" ").append("(");
                    }else {
                        fzdxmxcs.append(" ").append("(");
                    }
                    fzdxmxcs.append(jcxm.getFtype7()).append(" ").append(jcxm.getFtype5());
                    fzdxmxcs.append(")").append("\r");
                    order++;
                }
            }

            zyqxSize = zdxmbfhsl + zdxmxcsl; // 数量
        }

        // 一般项目
        List<SpcySqsxJcxm> ybxmList = spcySqsxJcxmService.list(new LambdaQueryWrapper<SpcySqsxJcxm>()
                .eq(SpcySqsxJcxm::getFsqsxid, sqsxId)
                .eq(SpcySqsxJcxm::getFtype6, SpcyConstant.getJcxmSfzdxm(SpcyConstant.YWFL_CODE_HZP,0))
                .isNotNull(SpcySqsxJcxm::getFtype6)
                .orderByAsc(SpcySqsxJcxm::getFxh));

        if (CollectionUtils.isNotEmpty(ybxmList)){

            // 不符合规定
            List<SpcySqsxJcxm> bfhList = ybxmList.stream()
                    .filter(f -> StringUtils.isNotBlank(f.getFjcjl())
                            && f.getFjcjl().equals(SpcyConstant.REVIEW_RECORD_CONCLUSION_BFHGD))
                    .collect(Collectors.toList());
            ybxmbfhsl = bfhList.size();

            if (CollectionUtils.isNotEmpty(bfhList)){
                ybqxExistFlag = true;

                int order = 1;
                for (SpcySqsxJcxm jcxm : bfhList){
                    fcyybqx.append(" ").append(index).append("、 ");
                    if (StringUtils.isNotBlank(jcxm.getFscjl())) {
                        fcyybqx.append(jcxm.getFscjl()).append(" ").append("(");
                    }else {
                        fcyybqx.append(" ").append("(");
                    }
                    fcyybqx.append(jcxm.getFtype7()).append(" ").append(jcxm.getFtype5());
                    fcyybqx.append(")").append("\r");
                    index++;

                    fybxmbfhs.append(" ").append(order).append("、 ");
                    if (StringUtils.isNotBlank(jcxm.getFscjl())) {
                        fybxmbfhs.append(jcxm.getFscjl()).append(" ").append("(");
                    }else {
                        fybxmbfhs.append(" ").append("(");
                    }
                    fybxmbfhs.append(jcxm.getFtype7()).append(" ").append(jcxm.getFtype5());
                    fybxmbfhs.append(")").append("\r");
                    order++;
                }
            }

            // 瑕疵
            /*List<SpcySqsxJcxm> xcList = ybxmList.stream()
                    .filter(f -> StringUtils.isNotBlank(f.getFjcjl())
                            && f.getFjcjl().equals(SpcyConstant.REVIEW_RECORD_CONCLUSION_XC))
                    .collect(Collectors.toList());
            ybxmxcsl = xcList.size();

            if (CollectionUtils.isNotEmpty(xcList)){
                ybqxExistFlag = true;

                int order = 1;
                for (SpcySqsxJcxm jcxm : xcList){
                    fcyybqx.append(index).append("、 ");
                    if (StringUtils.isNotBlank(jcxm.getFscjl())) {
                        fcyybqx.append(jcxm.getFscjl()).append(" ").append("(");
                    }else {
                        fcyybqx.append(" ").append("(");
                    }
                    fcyybqx.append(jcxm.getFtype7()).append(" ").append(jcxm.getFtype5());
                    fcyybqx.append(")").append("\r");
                    index++;

                    fybxmxcs.append(order).append("、 ");
                    if (StringUtils.isNotBlank(jcxm.getFscjl())) {
                        fybxmxcs.append(jcxm.getFscjl()).append(" ").append("(");
                    }else {
                        fybxmxcs.append(" ").append("(");
                    }
                    fybxmxcs.append(jcxm.getFtype7()).append(" ").append(jcxm.getFtype5());
                    fybxmxcs.append(")").append("\r");
                    order++;
                }
            }*/

            ybqxSize = zdxmbfhsl; // 数量

        }

        int count = 0;
        count = gjxmbfhsl + gjxmxcsl + zdxmbfhsl + zdxmxcsl + ybxmbfhsl;
        map.put("qxtotal",count);

        int zdqxtotal = 0;
        zdqxtotal = gjxmbfhsl + gjxmxcsl + zdxmbfhsl + zdxmxcsl;
        map.put("zdqxtotal",zdqxtotal);

        // 关键项目 不符合数、瑕疵数
        map.put("gjxmbfhsl", gjxmbfhsl);
        map.put("gjxmxcsl", gjxmxcsl);

        map.put("fgjxmbfhs",fgjxmbfhs);
        map.put("fgjxmxcs",fgjxmxcs);

        // 重点项目 不符合数、瑕疵数
        map.put("zdxmbfhsl", zdxmbfhsl);
        map.put("zdxmxcsl", zdxmxcsl);

        map.put("fzdxmbfhs",fzdxmbfhs);
        map.put("fzdxmxcs",fzdxmxcs);

        // 一般项目 不符合数、瑕疵数
        map.put("ybxmbfhsl", ybxmbfhsl);
        map.put("ybxmxcsl", ybxmxcsl);

        map.put("fybxmbfhs",fybxmbfhs);
        map.put("fybxmxcs",fybxmxcs);

        map.put("ybqxExistFlag",ybqxExistFlag);
        map.put("zyqxExistFlag",zyqxExistFlag);
        map.put("yzqxExistFlag",yzqxExistFlag);

        map.put("ybqxSize",ybqxSize);
        map.put("zyqxSize",zyqxSize);
        map.put("yzqxSize",yzqxSize);

        map.put("fcyybqx",fcyybqx);
        map.put("fcyzyqx",fcyzyqx);
        map.put("fcyyzqx",fcyyzqx);
        return map;
    }

    @Override
    public Map<String,String> getJcConclusionInYpsc(String sqsxId,String ywflCode){
        Map<String,String> resultMap = new HashMap<>();
        String jl = "";
        List<SpcyRsYwzdxx> ywzzList = spcyRsYwzdxxService.list(new LambdaQueryWrapper<SpcyRsYwzdxx>()
                .eq(SpcyRsYwzdxx::getFzdlx1, SpcyConstant.YWZDXX_JL)
                .eq(SpcyRsYwzdxx::getFywflcode, ywflCode));
        if (CollectionUtils.isNotEmpty(ywzzList)){
            jl += ywzzList.get(0).getFzdnr();
        }

        SpcySqsxBasic sqsx = spcySqsxBaiscService.getById(sqsxId);

        Map ypscJcxmXX = this.getJcxmXXInYpsc(sqsxId);
        // 检查结果
        String jcjg = SpcyConstant.JCJG_FH;
        String qxqk = spcySqsxJcxmService.getQxqkByJcxmXxMap(ypscJcxmXX); // 发现缺陷情况

        // 缺陷情况
        String fcyybqx = ypscJcxmXX.get("fcyybqx").toString(); // 一般缺陷
        String fcyzyqx = ypscJcxmXX.get("fcyzyqx").toString(); // 主要缺陷
        String fcyyzqx = ypscJcxmXX.get("fcyyzqx").toString(); // 严重缺陷

        // 替换关键字
        String replacejL = jl.replace(SpcyConstant.YWZDXX_FXQXQK_REPLACE, qxqk);

        String jcyj = " "; // 检查依据
        String jcfw = " "; // 检查范围
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcyjcyj())){
            jcyj = sqsx.getFcyjcyj();
        }
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcyjcfw())){
            jcfw = sqsx.getFcyjcfw();
        }
        String replaceCyjcyj = replacejL.replace(SpcyConstant.YWZDXX_CYJCYJ_REPLACE,jcyj);
        String replaceCyjcfw = replaceCyjcyj.replace(SpcyConstant.YWZDXX_CYJCFW_REPLACE,jcfw);
        String replaceCyjg = replaceCyjcfw.replace(SpcyConstant.YWZDXX_CYJG_REPLACE,jcjg);

        StringBuffer nrMsg = new StringBuffer("\r\n现场检查发现缺陷情况如下：\r\n");
        nrMsg.append("一般缺陷: ").append(fcyybqx).append("\r\n");
        nrMsg.append("主要缺陷: ").append(fcyzyqx).append("\r\n");
        nrMsg.append("严重缺陷: ").append(fcyyzqx).append("\r\n");

        replaceCyjg += nrMsg.toString();
        jl = replaceCyjg;

        resultMap.put("fcyjl",jl);
        resultMap.put("fcyjg","");
        resultMap.put("fcyybqx",fcyybqx);
        resultMap.put("fcyzyqx",fcyzyqx);
        resultMap.put("fcyyzqx",fcyyzqx);
        return resultMap;
//        return jl;
    }

    @Override
    public Map<String,String> getJcConclusionInYlqx(String sqsxId,String ywflCode){
        Map<String,String> resultMap = new HashMap<>();

        /*String jl = "";
        List<SpcyRsYwzdxx> ywzzList = spcyRsYwzdxxService.list(new LambdaQueryWrapper<SpcyRsYwzdxx>()
                .eq(SpcyRsYwzdxx::getFzdlx1, SpcyConstant.YWZDXX_JL)
                .eq(SpcyRsYwzdxx::getFywflcode, ywflCode));
        if (CollectionUtils.isNotEmpty(ywzzList)){
            jl += ywzzList.get(0).getFzdnr();
        }*/

//        SpcySqsxBasic sqsx = spcySqsxBaiscService.getById(sqsxId);

        Map ylqxJcxmXX = this.getJcxmXXInYlqx(sqsxId);
        // 检查结果
        /*String jcjg = SpcyConstant.JCJG_FH;
        String qxqk = spcySqsxJcxmService.getQxqkByJcxmXxMapInYlqx(ylqxJcxmXX); // 发现缺陷情况*/

        // 缺陷情况
        String fcyybqx = ylqxJcxmXX.get("fcyybqx").toString(); // 一般缺陷
        String fcyzyqx = ylqxJcxmXX.get("fcyzyqx").toString(); // 主要缺陷
        String fcyyzqx = ylqxJcxmXX.get("fcyyzqx").toString(); // 严重缺陷
        int ybqxSize = (Integer)ylqxJcxmXX.get("cySizeInybqx"); // 一般缺陷数量
        int yzqxSize = (Integer)ylqxJcxmXX.get("cySizeInyzqx"); // 严重缺陷数量
        int countSize = ybqxSize+yzqxSize;

        // 替换关键字
//        String replacejL = jl.replace(SpcyConstant.YWZDXX_FXQXQK_REPLACE, qxqk);

        /*String jcyj = " "; // 检查依据
        String jcfw = " "; // 检查范围
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcyjcyj())){
            jcyj = sqsx.getFcyjcyj();
        }
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcyjcfw())){
            jcfw = sqsx.getFcyjcfw();
        }
        String replaceCyjcyj = replacejL.replace(SpcyConstant.YWZDXX_CYJCYJ_REPLACE,jcyj);
        String replaceCyjcfw = replaceCyjcyj.replace(SpcyConstant.YWZDXX_CYJCFW_REPLACE,jcfw);
        String replaceCyjg = replaceCyjcfw.replace(SpcyConstant.YWZDXX_CYJG_REPLACE,jcjg);*/

        StringBuffer nrMsg = new StringBuffer("\r\n现场检查发现缺陷共");
        nrMsg.append(countSize).append("项。");
        nrMsg.append("其中关键项目").append(yzqxSize).append("项，");
        nrMsg.append("一般项目").append(ybqxSize).append("项：\r\n");
        nrMsg.append(fcyyzqx);
        nrMsg.append(fcyybqx);
//        nrMsg.append("一般项目:").append(fcyybqx).append("\r\n");
//        nrMsg.append("关键项目: ").append(fcyyzqx).append("\r\n");


        /*replaceCyjg += nrMsg.toString();
        jl = replaceCyjg;*/
        String jlTwo = nrMsg.toString();

        resultMap.put("fcyjl",jlTwo);
        resultMap.put("fcyjg","");
        resultMap.put("fcyybqx",fcyybqx);
        resultMap.put("fcyzyqx",fcyzyqx);
        resultMap.put("fcyyzqx",fcyyzqx);
        return resultMap;
    }

    @Override
    public Map<String,String> getJcConclusionInYpzc(String sqsxId,String ywflcode){
        Map<String,String> resultMap = new HashMap<>();

        Map ylqxJcxmXX = this.getJcxmXXInYpzc(sqsxId);

        // 缺陷情况
        String fcyybqx = ylqxJcxmXX.get("fcyybqx").toString(); // 一般缺陷
        String fcyzyqx = ylqxJcxmXX.get("fcyzyqx").toString(); // 主要缺陷
        String fcyyzqx = ylqxJcxmXX.get("fcyyzqx").toString(); // 严重缺陷
        int ybqxSize = (Integer)ylqxJcxmXX.get("cySizeInybqx"); // 一般缺陷数量
        int yzqxSize = (Integer)ylqxJcxmXX.get("cySizeInyzqx"); // 严重缺陷数量
        int countSize = ybqxSize+yzqxSize;

        StringBuffer nrMsg = new StringBuffer("\r现场检查发现缺陷共");
        nrMsg.append(countSize).append("项。");
        nrMsg.append("其中关键项目").append(yzqxSize).append("项，");
        nrMsg.append("一般项目").append(ybqxSize).append("项：\r");
        nrMsg.append(fcyyzqx);
        nrMsg.append(fcyybqx);

        String jlTwo = nrMsg.toString();

        resultMap.put("fcyjl",jlTwo);
        resultMap.put("fcyjg","");
        resultMap.put("fcyybqx",fcyybqx);
        resultMap.put("fcyzyqx",fcyzyqx);
        resultMap.put("fcyyzqx",fcyyzqx);
        return resultMap;
    }

    @Override
    public Map<String,String> getJcConclusionInYplt(String sqsxId,String ywflCode){
        Map<String,String> resultMap = new HashMap<>();
        String jl = "";
        List<SpcyRsYwzdxx> ywzzList = spcyRsYwzdxxService.list(new LambdaQueryWrapper<SpcyRsYwzdxx>()
                .eq(SpcyRsYwzdxx::getFzdlx1, SpcyConstant.YWZDXX_JL)
                .eq(SpcyRsYwzdxx::getFywflcode, ywflCode));
        if (CollectionUtils.isNotEmpty(ywzzList)){
            jl += ywzzList.get(0).getFzdnr();
        }

//        SpcySqsxBasic sqsx = spcySqsxBaiscService.getById(sqsxId);

        Map ypscJcxmXX = this.getJcxmXXInYplt(sqsxId);
        // 检查结果
//        String jcjg = SpcyConstant.JCJG_FH;
//        String qxqk = spcySqsxJcxmService.getQxqkByJcxmXxMap(ypscJcxmXX); // 发现缺陷情况

        // 缺陷情况
        String fcyybqx = ypscJcxmXX.get("fcyybqx").toString(); // 一般缺陷
        String fcyzyqx = ypscJcxmXX.get("fcyzyqx").toString(); // 主要缺陷
        String fcyyzqx = ypscJcxmXX.get("fcyyzqx").toString(); // 严重缺陷

        String replace1 = jl.replace("${data.yzqxSize}",ypscJcxmXX.get("yzqxSize").toString());
        String replace2 = replace1.replace("${data.zyqxSize}",ypscJcxmXX.get("zyqxSize").toString());
        String replace3 = replace2.replace("${data.ybqxSize}",ypscJcxmXX.get("ybqxSize").toString());

        // 替换关键字
        /*String replacejL = jl.replace(SpcyConstant.YWZDXX_FXQXQK_REPLACE, qxqk);

        String jcyj = " "; // 检查依据
        String jcfw = " "; // 检查范围
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcyjcyj())){
            jcyj = sqsx.getFcyjcyj();
        }
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcyjcfw())){
            jcfw = sqsx.getFcyjcfw();
        }
        String replaceCyjcyj = replacejL.replace(SpcyConstant.YWZDXX_CYJCYJ_REPLACE,jcyj);
        String replaceCyjcfw = replaceCyjcyj.replace(SpcyConstant.YWZDXX_CYJCFW_REPLACE,jcfw);
        String replaceCyjg = replaceCyjcfw.replace(SpcyConstant.YWZDXX_CYJG_REPLACE,jcjg);*/

        StringBuffer nrMsg = new StringBuffer("\r\n");
        if (ypscJcxmXX.get("yzqxSize").toString().equals("0")){
            nrMsg.append("严重缺陷0项。").append("\r\n");
        }else {
            nrMsg.append("严重缺陷").append(ypscJcxmXX.get("yzqxSize").toString()).append("项：").append(fcyyzqx).append("\r\n");
        }

        if (ypscJcxmXX.get("zyqxSize").toString().equals("0")){
            nrMsg.append("主要缺陷0项。").append("\r\n");
        }else {
            nrMsg.append("主要缺陷").append(ypscJcxmXX.get("zyqxSize").toString()).append("项：").append(fcyzyqx).append("\r\n");
        }

        if (ypscJcxmXX.get("ybqxSize").toString().equals("0")){
            nrMsg.append("一般缺陷0项。").append("\r\n");
        }else {
            nrMsg.append("一般缺陷").append(ypscJcxmXX.get("ybqxSize").toString()).append("项：").append(fcyybqx).append("\r\n");
        }

        replace3 += nrMsg.toString();
        jl = replace3;

        resultMap.put("fcyjl",jl);
        resultMap.put("fcyjg","");
        resultMap.put("fcyybqx",fcyybqx);
        resultMap.put("fcyzyqx",fcyzyqx);
        resultMap.put("fcyyzqx",fcyyzqx);
        return resultMap;
    }

    @Override
    public Map<String,String> getJcConclusionInHzp(String sqsxId,String ywflcode){
        Map<String,String> resultMap = new HashMap<>();

        Map jcxmXX = this.getJcxmXXInHzp(sqsxId);

        // 缺陷情况
        String fcyybqx = jcxmXX.get("fcyybqx").toString(); // 一般缺陷
        String fcyzyqx = jcxmXX.get("fcyzyqx").toString(); // 主要缺陷
        String fcyyzqx = jcxmXX.get("fcyyzqx").toString(); // 严重缺陷

        /*int ybqxSize = (Integer)jcxmXX.get("ybqxSize"); // 一般缺陷数量
        int zyqxSize = (Integer)jcxmXX.get("zyqxSize"); // 主要缺陷数量
        int yzqxSize = (Integer)jcxmXX.get("yzqxSize"); // 严重缺陷数量
        int countSize = ybqxSize + zyqxSize + yzqxSize;*/

        // 替换关键字
        /*StringBuffer nrMsg = new StringBuffer("\r\n现场检查发现缺陷共");
        nrMsg.append(countSize).append("项。");*/

        // 关键项目
        /*if ((boolean)jcxmXX.get("yzqxExistFlag")){
            nrMsg.append("其中关键项目").append(yzqxSize).append("项：").append("\r\n");
            nrMsg.append(fcyyzqx);
        }else {
            nrMsg.append("其中关键项目").append(yzqxSize).append("项，");
        }*/

        // 主要缺陷
        /*if ((boolean)jcxmXX.get("zyqxExistFlag")){
            nrMsg.append("重点项目").append(zyqxSize).append("项：").append("\r\n");
            nrMsg.append(fcyzyqx);
        }else {
            nrMsg.append("重点项目").append(zyqxSize).append("项，");
        }*/

        // 一般缺陷
        /*if ((boolean)jcxmXX.get("ybqxExistFlag")){
            nrMsg.append("一般项目").append(ybqxSize).append("项：").append("\r\n");
            nrMsg.append(fcyybqx);
        }else {
            nrMsg.append("一般项目").append(ybqxSize).append("项。");
        }*/

        StringBuffer nrMsg = new StringBuffer();
        if (StringUtils.isNotBlank(fcyyzqx)) {
            nrMsg.append(fcyyzqx);
        }
        if (StringUtils.isNotBlank(fcyzyqx)) {
            nrMsg.append(fcyzyqx);
        }
        if (StringUtils.isNotBlank(fcyybqx)) {
            nrMsg.append(fcyybqx);
        }

        String jlTwo = nrMsg.toString();

        // 关键项目 不符合数、瑕疵数
        Integer fgjxmbfhs = Integer.valueOf(jcxmXX.get("gjxmbfhsl").toString());
        Integer fgjxmxcs = Integer.valueOf(jcxmXX.get("gjxmxcsl").toString());

        // 重点项目 不符合数、瑕疵数
        Integer fzdxmbfhs = Integer.valueOf(jcxmXX.get("zdxmbfhsl").toString());
        Integer fzdxmxcs = Integer.valueOf(jcxmXX.get("zdxmxcsl").toString());

        // 一般项目 不符合数
        Integer fybxmbfhs = Integer.valueOf(jcxmXX.get("ybxmbfhsl").toString());

        /**
         * 1. 现场核查中未发现企业存在不符合规定项目的，应当判定为“现场核查通过”。
         */

        /**
         * 2. 现场核查中发现企业存在以下情形之一的，应当判定为“现场核查不通过”：
         * （1）关键项目不符合规定；
         * （2）关键项目瑕疵数与其他重点项目不符合规定数总和大于6项（含）；
         * （3）重点项目不符合规定数、重点项目瑕疵数、一般项目不符合规定数总和大于16项（含）。
         */

        /**
         * 3. 现场核查中发现企业存在不符合规定项目，但未存在上述应当判定为“现场核查不通过”情形的，应当判定为“整改后复查”。
         * 判定为“整改后复查”的企业，应当在规定时间内完成整改，并向省、自治区、直辖市药品监督管理部门提交整改报告。
         * 省、自治区、直辖市药品监督管理部门收到整改报告后，可以根据实际情况对该企业组织现场复查，
         * 确认整改符合要求后，判定为“现场核查通过”；
         * 对于规定时限内未提交整改报告或者复查发现整改项目仍不符合规定的，应当判定为“现场核查不通过”。
         */
        String cyjg = "";

        if (fgjxmbfhs == 0 && fzdxmbfhs == 0 && fybxmbfhs == 0) {
            cyjg = SpcyConstant.HZP_JCXM_SCJG_XCHCTG; // 1.
        }else {
            if (fgjxmbfhs > 0){
                cyjg = SpcyConstant.HZP_JCXM_SCJG_XCHCBTG; // 2.(1)
            }else {
                int gjxsYzdbfhs = fgjxmxcs + fzdxmbfhs;
                if (gjxsYzdbfhs > 5){
                    cyjg = SpcyConstant.HZP_JCXM_SCJG_XCHCBTG; // 2.(2)

                }else {
                    int zdbfhYzdxcYybbfh = fzdxmbfhs + fzdxmxcs + fybxmbfhs;
                    if (zdbfhYzdxcYybbfh > 15){
                        cyjg = SpcyConstant.HZP_JCXM_SCJG_XCHCBTG; // 2. (3)
                    }else {
                        cyjg = SpcyConstant.HZP_JCXM_SCJG_ZGHFC; // 3.
                    }
                }
            }
        }




        resultMap.put("fcyjl",jlTwo);
        resultMap.put("fcyjg", cyjg);
        resultMap.put("fcyybqx",fcyybqx);
        resultMap.put("fcyzyqx",fcyzyqx);
        resultMap.put("fcyyzqx",fcyyzqx);

        // 关键项目 不符合数、瑕疵数
        resultMap.put("fgjxmbfhs",jcxmXX.get("fgjxmbfhs").toString());
        resultMap.put("fgjxmxcs",jcxmXX.get("fgjxmxcs").toString());

        // 重点项目 不符合数、瑕疵数
        resultMap.put("fzdxmbfhs",jcxmXX.get("fzdxmbfhs").toString());
        resultMap.put("fzdxmxcs",jcxmXX.get("fzdxmxcs").toString());

        // 一般项目 不符合数、瑕疵数
        resultMap.put("fybxmbfhs",jcxmXX.get("fybxmbfhs").toString());

        return resultMap;

        /*resultMap.put("fcyjl","fcyjl");
        resultMap.put("fcyjg",SpcyConstant.JCJG_FH);
        resultMap.put("fcyybqx","0项。");
        resultMap.put("fcyzyqx","0项。");
        resultMap.put("fcyyzqx","0项。");
        return resultMap;*/
    }

    @Override
    public String getQkhzpgInYplt(String sqsxId,String fsxmc) {

        // @param type 零售企业 / 经营企业 / 批发企业

        LambdaQueryWrapper<SpcySqsxJcxm> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(SpcySqsxJcxm::getFsqsxid, sqsxId);
        queryWrapper.like(SpcySqsxJcxm::getFtype3,SpcyConstant.getYpltQylxBySxmc(fsxmc));
        queryWrapper.orderByAsc(SpcySqsxJcxm::getFxh);
        queryWrapper.orderByAsc(SpcySqsxJcxm::getCreateTime);
        List<SpcySqsxJcxm> jcxmList = spcySqsxJcxmService.list(queryWrapper);

        StringBuffer msg = new StringBuffer();
        /*List<String> typeList = Arrays.asList("总则","质量管理体系","机构与质量管理职责","人员与培训",
                "质量管理体系文件","设施与设备","验证与校准","计算机系统","采购","收货与验收","储存与养护","销售","出库","运输与配送","售后管理");*/
        List<Map<String,String>> gfList = Arrays.asList(new HashMap<>());
        if (CollectionUtils.isNotEmpty(jcxmList)){
            List<String> typeList = jcxmList.stream().map(SpcySqsxJcxm::getFtype5).distinct().collect(Collectors.toList());
            if (CollectionUtils.isNotEmpty(typeList)){
                int index = 1;
                for (String jcxm : typeList){
                    msg.append("(").append(SpcyConstant.getLmszByAlbsz(index)).append(")").append(jcxm);
//                    .append("（规范第2、4条）").append("\n")
                    List<SpcySqsxJcxm> jcxmTypeList = jcxmList.stream()
                            .filter(f -> StringUtils.isNotBlank(f.getFtype5())
                                    && f.getFtype5().equals(jcxm)).collect(Collectors.toList());
                    if (CollectionUtils.isNotEmpty(jcxmTypeList)){
                        List<String> tkArray = jcxmTypeList.stream().map(SpcySqsxJcxm::getFtype7).collect(Collectors.toList());
                        msg.append("（规范第");
                        msg.append(this.getTkhRange(tkArray)); // 获取对应条款下的条款号范围 如：2、4
                        msg.append("条）");
                    }
                    msg.append("\r\n");

                    msg.append("发现的问题：");
                    // 不为无缺陷的内容
                    List<SpcySqsxJcxm> qxList = spcySqsxJcxmService.list(new LambdaQueryWrapper<SpcySqsxJcxm>()
                            .eq(SpcySqsxJcxm::getFsqsxid, sqsxId)
                            .eq(SpcySqsxJcxm::getFtype5, jcxm)
                            .ne(SpcySqsxJcxm::getFjcjl, SpcyConstant.REVIEW_RECORD_CONCLUSION_WQX));
                    if (CollectionUtils.isEmpty(qxList)){
                        msg.append("未发现。");
                    }else {
                        msg.append("\r\n");
                        int order = 1;
                        for (SpcySqsxJcxm qx : qxList){
                            msg.append(order).append("、").append(qx.getFtype7()).append(" ").append(qx.getFscjl()).append("\r\n");
                            order++;
                        }
                    }
                    msg.append("\r\n");
                    index++;
                }
            }
        }

        return msg.toString();
    }

    // 根据条款号，判断范围
    public String getTkhRange(List<String> tkArray){
        List<Integer> tkList = new ArrayList<>();
        for (String tk : tkArray) {
            List<Integer> numbers = StringPatternUtils.getNumbersInsideByString(tk);
            if (CollectionUtils.isNotEmpty(numbers)) {
                String integer = String.valueOf(numbers.get(0));
                if (integer.length() == 3){
                    tkList.add(Integer.valueOf(integer.substring(0,1)));
                }else if (integer.length() == 4){
                    tkList.add(Integer.valueOf(integer.substring(0,2)));
                }else if (integer.length() == 5){
                    tkList.add(Integer.valueOf(integer.substring(0,3)));
                }
            }
        }
        StringBuffer tk = new StringBuffer();
        tk.append(Collections.min(tkList));
        tk.append("-");
        tk.append(Collections.max(tkList));

        return tk.toString();
    }

    @Override
    public Map<String,String> getComprehensiveConclusionInYpsc(SpcySqsxBasic sqsx,String fywflcode){
        Map<String,String> resultMap = new HashMap<>();
        String jl = "";
        List<SpcyRsYwzdxx> ywzzList = spcyRsYwzdxxService.list(new LambdaQueryWrapper<SpcyRsYwzdxx>()
                .eq(SpcyRsYwzdxx::getFzdlx1, SpcyConstant.YWZDXX_ZHJL)
                .eq(SpcyRsYwzdxx::getFywflcode, fywflcode));
        if (CollectionUtils.isNotEmpty(ywzzList)){
            jl += ywzzList.get(0).getFzdnr();
        }

        Map ypscJcxmXX = this.getJcxmXXInYpsc(sqsx.getId());


        String zhjg = SpcyConstant.JCJG_FH;

        String qxqk = spcySqsxJcxmService.getQxqkByJcxmXxMap(ypscJcxmXX);

        String cpmc = " ";
        String gcybm = " ";
        String cyjcyj = " ";
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcpmc())){
            cpmc = sqsx.getFcpmc();
        }
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcygcybm())){
            gcybm = sqsx.getFcygcybm();
        }
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcyjcyj())){
            cyjcyj = sqsx.getFcyjcyj();
        }
        String replace = jl.replace(SpcyConstant.YWZDXX_CPMC_REPLACE, cpmc)
                .replace(SpcyConstant.YWZDXX_ZHJG_REPLACE, zhjg)
                .replace(SpcyConstant.YWZDXX_CYGCYBM_REPLACE, gcybm)
                .replace(SpcyConstant.YWZDXX_CYJCYJ_REPLACE,cyjcyj)
                .replace(SpcyConstant.YWZDXX_FXQXQK_REPLACE,qxqk);

        resultMap.put("fzhjl",replace);
        resultMap.put("fzhjg","");
        return resultMap;
    }

    @Override
    public Map<String,String> getComprehensiveConclusionInYpzc(SpcySqsxBasic sqsx,String fywflcode){
        Map<String,String> resultMap = new HashMap<>();

        String jl = "";
        List<SpcyRsYwzdxx> ywzzList = spcyRsYwzdxxService.list(new LambdaQueryWrapper<SpcyRsYwzdxx>()
                .eq(SpcyRsYwzdxx::getFzdlx1, SpcyConstant.YWZDXX_ZHJL)
                .eq(SpcyRsYwzdxx::getFywflcode, fywflcode));
        if (CollectionUtils.isNotEmpty(ywzzList)){
            jl += ywzzList.get(0).getFzdnr();
        }

        Map ypzcJcxmXX = this.getJcxmXXInYpzc(sqsx.getId());

        String zhjg = SpcyConstant.JCJG_FH;

        String qxqk = spcySqsxJcxmService.getQxqkByJcxmXxMapInYlqx(ypzcJcxmXX);

        String cpmc = " ";
        String gcybm = " ";
        String cyjcyj = " ";
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcpmc())){
            cpmc = sqsx.getFcpmc();
        }
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcygcybm())){
            gcybm = sqsx.getFcygcybm();
        }
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcyjcyj())){
            cyjcyj = sqsx.getFcyjcyj();
        }
        String replace = jl.replace(SpcyConstant.YWZDXX_CPMC_REPLACE, cpmc)
                .replace(SpcyConstant.YWZDXX_ZHJG_REPLACE, zhjg)
                .replace(SpcyConstant.YWZDXX_CYGCYBM_REPLACE, gcybm)
                .replace(SpcyConstant.YWZDXX_CYJCYJ_REPLACE,cyjcyj)
                .replace(SpcyConstant.YWZDXX_FXQXQK_REPLACE,qxqk);

        resultMap.put("fzhjl",replace);
        resultMap.put("fzhjg","");
        return resultMap;
    }

    @Override
    public Map<String,String> getComprehensiveConclusionInYplt(SpcySqsxBasic sqsx,String fywflcode){
        Map<String,String> resultMap = new HashMap<>();
        String jl = "";
        List<SpcyRsYwzdxx> ywzzList = spcyRsYwzdxxService.list(new LambdaQueryWrapper<SpcyRsYwzdxx>()
                .eq(SpcyRsYwzdxx::getFzdlx1, SpcyConstant.YWZDXX_ZHJL)
                .eq(SpcyRsYwzdxx::getFywflcode, fywflcode));
        if (CollectionUtils.isNotEmpty(ywzzList)){
            jl += ywzzList.get(0).getFzdnr();
        }

        Map jcxmXX = this.getJcxmXXInYplt(sqsx.getId());


        String zhjg = SpcyConstant.JCJG_FH;

        String qxqk = spcySqsxJcxmService.getQxqkByJcxmXxMapInYplt(jcxmXX);

        String cpmc = " ";
        String gcybm = " ";
        String cyjcyj = " ";
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcpmc())){
            cpmc = sqsx.getFcpmc();
        }
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcygcybm())){
            gcybm = sqsx.getFcygcybm();
        }
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcyjcyj())){
            cyjcyj = sqsx.getFcyjcyj();
        }
        String replace = jl.replace(SpcyConstant.YWZDXX_CPMC_REPLACE, cpmc)
                .replace(SpcyConstant.YWZDXX_ZHJG_REPLACE, zhjg)
                .replace(SpcyConstant.YWZDXX_CYGCYBM_REPLACE, gcybm)
                .replace(SpcyConstant.YWZDXX_CYJCYJ_REPLACE,cyjcyj)
                .replace(SpcyConstant.YWZDXX_FXQXQK_REPLACE,qxqk);

        resultMap.put("fzhjl",replace);
        resultMap.put("fzhjg","");
        return resultMap;
    }

    @Override
    public Map<String,String> getComprehensiveConclusionInYlqx(SpcySqsxBasic sqsx,String fywflcode){
        Map<String,String> resultMap = new HashMap<>();
        String jl = "";
        List<SpcyRsYwzdxx> ywzzList = spcyRsYwzdxxService.list(new LambdaQueryWrapper<SpcyRsYwzdxx>()
                .eq(SpcyRsYwzdxx::getFzdlx1, SpcyConstant.YWZDXX_ZHJL)
                .eq(SpcyRsYwzdxx::getFywflcode, fywflcode));
        if (CollectionUtils.isNotEmpty(ywzzList)){
            jl += ywzzList.get(0).getFzdnr();
        }

        Map ylqxJcxmXX = this.getJcxmXXInYlqx(sqsx.getId());


        String zhjg = SpcyConstant.JCJG_FH;

        String qxqk = spcySqsxJcxmService.getQxqkByJcxmXxMapInYlqx(ylqxJcxmXX);

        String cpmc = " ";
        String gcybm = " ";
        String cyjcyj = " ";
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcpmc())){
            cpmc = sqsx.getFcpmc();
        }
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcygcybm())){
            gcybm = sqsx.getFcygcybm();
        }
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcyjcyj())){
            cyjcyj = sqsx.getFcyjcyj();
        }
        String replace = jl.replace(SpcyConstant.YWZDXX_CPMC_REPLACE, cpmc)
                .replace(SpcyConstant.YWZDXX_ZHJG_REPLACE, zhjg)
                .replace(SpcyConstant.YWZDXX_CYGCYBM_REPLACE, gcybm)
                .replace(SpcyConstant.YWZDXX_CYJCYJ_REPLACE,cyjcyj)
                .replace(SpcyConstant.YWZDXX_FXQXQK_REPLACE,qxqk);

        resultMap.put("fzhjl",replace);
        resultMap.put("fzhjg","");
        return resultMap;
        /*resultMap.put("fzhjl","");
        resultMap.put("fzhjg",SpcyConstant.JCJG_FH);
        return resultMap;*/
    }

    @Override
    public Map<String,String> getComprehensiveConclusionInHzp(SpcySqsxBasic sqsx,String fywflcode){
        Map<String,String> resultMap = new HashMap<>();

        String jl = "";
        List<SpcyRsYwzdxx> ywzzList = spcyRsYwzdxxService.list(new LambdaQueryWrapper<SpcyRsYwzdxx>()
                .eq(SpcyRsYwzdxx::getFzdlx1, SpcyConstant.YWZDXX_ZHJL)
                .eq(SpcyRsYwzdxx::getFywflcode, fywflcode));
        if (CollectionUtils.isNotEmpty(ywzzList)){
            jl += ywzzList.get(0).getFzdnr();
        }

        Map ylqxJcxmXX = this.getJcxmXXInHzp(sqsx.getId());


        String zhjg = SpcyConstant.JCJG_FH;

        String qxqk = spcySqsxJcxmService.getQxqkByJcxmXxMapInYlqx(ylqxJcxmXX);

        String cpmc = " ";
        String gcybm = " ";
        String cyjcyj = " ";
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcpmc())){
            cpmc = sqsx.getFcpmc();
        }
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcygcybm())){
            gcybm = sqsx.getFcygcybm();
        }
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sqsx.getFcyjcyj())){
            cyjcyj = sqsx.getFcyjcyj();
        }
        String replace = jl.replace(SpcyConstant.YWZDXX_CPMC_REPLACE, cpmc)
                .replace(SpcyConstant.YWZDXX_ZHJG_REPLACE, zhjg)
                .replace(SpcyConstant.YWZDXX_CYGCYBM_REPLACE, gcybm)
                .replace(SpcyConstant.YWZDXX_CYJCYJ_REPLACE,cyjcyj)
                .replace(SpcyConstant.YWZDXX_FXQXQK_REPLACE,qxqk);

        resultMap.put("fzhjl",replace);
        resultMap.put("fzhjg","");
        return resultMap;
    }

    @Async("asyncNormalTask")
    public void asyncReviewDefectExecute(List<SpcySqsxJcxm> sqsxJcxmList,CountDownLatch countDownLatch){
        try {
            log.info("异步开始添加审查缺陷记录");
            saveBatch(sqsxJcxmList);
            log.info("异步结束添加审查缺陷记录");
        }finally {
            countDownLatch.countDown();
        }
    }

}
